/* 
处理 user路由逻辑的地方

*/

const { use } = require('../app');
const { User } = require('../model')
const jwt = require('../util/jwt')
const {jwtSceret} = require('../config/config.default')
//用户注册
exports.register = async (req,res,next)=>{
    try {
      //1. 获取请求体数据
      //2. 数据验证
      //2. 1. 基本数据验证
      //2. 2. 业务数据检验
      //3. 验证通过将，将数据保存到数据库
      const user = new User(req.body.user)
      await user.save()
      //4. 发送成功响应
      res.status(201).json({user});
    } catch (error) {
      next(error)
    }
  }


  //用户登录
exports.login = async function(req, res, next) {
    try {
      //1. 获取请求体数据
      //2. 生成token  
      const user = req.user.toJSON() //将mongoose数据转为为普通的json
      const token = await jwt.sign({userId:user._id},jwtSceret,{expiresIn:30})

      //3. 发送成功响应
      delete user.password
      res.status(200).json({
        ...user,
        token
      });
    } catch (error) {
      next(error)
    }
  }

  //获取用户信息
exports.getCurrentUser = async (req,res,next)=>{
    try {
      //1. 获取请求体数据
      //2. 数据验证
      //2. 1. 基本数据验证
      //2. 2. 业务数据检验
      //3. 验证通过将，将数据保存到数据库
      //4. 发送成功响应
      res.status(200).json({
        user:req.user
      });
    } catch (error) {
      next(error)
    }
  }